package com.diudiutechnology.www.yadiudiu.util.utils;

import android.content.Context;
import android.util.DisplayMetrics;

/**
 * Created by Administrator on 2017/8/15.
 * 显示尺寸转换类
 *
 *
 */

public class DisplayMetricsConverter {
    /**
     * px转换为dip
     *
     * @param pixel
     * @return
     */
    public static int PixelToDip(Context context, int pixel) {
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        return pixel * 160 / dm.densityDpi;
    }

    /**
     * px转换为dip，例如：15px
     *
     * @param pixel
     * @return
     */
    public static int PixelToDip(Context context, String pixel) {
        return PixelToDip(context,
                Integer.valueOf(pixel.toLowerCase().replace("px", "")));
    }

    /**
     * dip转换为px
     *
     * @param dip
     * @return
     */
    public static int DipToPixel(Context context, int dip) {
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        return dip * dm.densityDpi / 160;
    }

    /**
     * dip转换为px，例如：15dip或者15dp
     *
     * @param dip
     * @return
     */
    public static int DipToPixel(Context context, String dip) {
        return DipToPixel(
                context,
                Integer.valueOf(dip.toLowerCase().replace("dip", "")
                        .replace("dp", "")));
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     *
     * @param pxValue
     *            （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    public static int px2sp(Context context, float pxValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     *
     * @param spValue
     *            （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }
}

